AD Connectorで既存Active Directory利用するWorkspacesを設定してみた
はじめに
AWSチームのすずきです。
既存のActive Directory(ADサーバ)の認証情報を使用するWorkspaces環境を構築するため、 AD Connectorを設置する機会がありましたので、紹介させて頂きます。
構成図
検証環境
- 今回の検証、同一VPC上のEC2にADサーバと、AD Connectorを設置しました。
本番環境(想定)
- 専用線(DX)などで、オンプレミスのAD環境との連携を想定しています。
事前確認
AD Connectorの設置要件が満たされている事を確認するため、 設置するVPCにEC2インスタンス、今回はAmazonLinuxを設置し、事前確認を行いました。
ポート確認
AD Connectorを設置するVPCセグメントから、ADサーバへのポート疎通を確認します。
今回はWorkSpacesでADサーバを利用するため、WorkSpacesの管理者ガイドに記載されたポートを対象に確認を行いました。
- TCP/UDP 53 - DNS
- TCP/UDP 88 - Kerberos authentication
- UDP 123 - NTP
- TCP 135 - RPC
- UDP 137-138 - Netlogon
- TCP 139 - Netlogon
- TCP/UDP 389 - LDAP
- TCP/UDP 445 - SMB
- TCP 1024-65535 - Dynamic ports for RPC
NMAP
Amazon Linuxでは、「nmap」コマンドをインストールしポートスキャンを行う事が可能です。
TARGETIP="172.31.40.1" sudo yum install nmap -y nmap -Pn ${TARGETIP} sudo nmap -Pn -sU ${TARGETIP}
TCPポート
$ nmap -Pn ${TARGETIP} Starting Nmap 6.40 ( http://nmap.org ) at 2018-02-08 14:39 UTC Nmap scan report for ip-172-31-40-1.ap-northeast-1.compute.internal (172.31.40.1) Host is up (0.0035s latency). Not shown: 991 filtered ports PORT STATE SERVICE 53/tcp open domain 88/tcp open kerberos-sec 135/tcp open msrpc 139/tcp open netbios-ssn 389/tcp open ldap 445/tcp open microsoft-ds 3268/tcp open globalcatLDAP 3269/tcp open globalcatLDAPssl 3389/tcp open ms-wbt-server Nmap done: 1 IP address (1 host up) scanned in 4.47 seconds
UDPポート
$ sudo nmap -Pn -sU ${TARGETIP} Starting Nmap 6.40 ( http://nmap.org ) at 2018-02-08 14:42 UTC Nmap scan report for ip-172-31-40-1.ap-northeast-1.compute.internal (172.31.40.1) Host is up (0.0024s latency). Not shown: 998 open|filtered ports PORT STATE SERVICE 53/udp open domain 123/udp open ntp
NC
「nmap」が利用できない場合には、「nc」コマンドでの確認も可能です。 RPCの動的ポート(TCP 1024-65535)は省略しています。
TARGETIP="172.31.40.1" TCPPORT=(53 88 135 139 389 445 3268) UDPPORT=(53 123) for PORT in ${TCPPORT[@]}; do nc -zv ${TARGETIP} ${PORT} done for PORT in ${UDPPORT[@]}; do nc -zvu ${TARGETIP} ${PORT} done
$ for PORT in ${TCPPORT[@]}; do > nc -zv ${TARGETIP} ${PORT} > done Connection to 172.31.40.1 53 port [tcp/domain] succeeded! Connection to 172.31.40.1 88 port [tcp/kerberos] succeeded! Connection to 172.31.40.1 135 port [tcp/epmap] succeeded! Connection to 172.31.40.1 139 port [tcp/netbios-ssn] succeeded! Connection to 172.31.40.1 389 port [tcp/ldap] succeeded! Connection to 172.31.40.1 445 port [tcp/microsoft-ds] succeeded! Connection to 172.31.40.1 3268 port [tcp/msft-gc] succeeded! $ for PORT in ${UDPPORT[@]}; do > nc -zv ${TARGETIP} ${PORT} > done Connection to 172.31.40.1 53 port [udp/domain] succeeded! Connection to 172.31.40.1 123 port [udp/ntp] succeeded!
SRVレコード
ADサーバのDNSから、AD Connector が必要とするSRVレコード 「_ldap_tcp.<ドメイン名>」「_kerberos_tcp.<ドメイン名>」が得られる事を確認します。
ADDOMAIN="cm-test.local" TARGETIP="172.31.40.1" LDAP_TMP="_ldap._tcp.${ADDOMAIN}" echo "### ${LDAP_TMP} ###" dig SRV "${LDAP_TMP}" "@${TARGETIP}" KERBEROS_TMP="_kerberos._tcp.${ADDOMAIN}" echo "### ${KERBEROS_TMP} ###" dig SRV "${KERBEROS_TMP}" "@${TARGETIP}"
_ldap
$ dig SRV "${LDAP_TMP}" "@${TARGETIP}" ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.56.amzn1 <<>> SRV _ldap._tcp.cm-test.local @172.31.40.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28630 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2 ;; QUESTION SECTION: ;_ldap._tcp.cm-test.local. IN SRV ;; ANSWER SECTION: _ldap._tcp.cm-test.local. 600 IN SRV 0 100 389 EC2AMAZ-#######.cm-test.local. (略)
_kerberos.
$ dig SRV "${KERBEROS_TMP}" "@${TARGETIP}" ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.56.amzn1 <<>> SRV _kerberos._tcp.cm-test.local @172.31.40.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41594 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2 ;; QUESTION SECTION: ;_kerberos._tcp.cm-test.local. IN SRV ;; ANSWER SECTION: _kerberos._tcp.cm-test.local. 600 IN SRV 0 100 88 EC2AMAZ-#######.cm-test.local. (略)
DNS設定確認
- ADサーバのDNSからSRVレコードの取得が出来ない場合、ADサーバのDNS設定を確認します。
ディレクトリの作成
ディレクトリタイプの選択
- 既存の AD の拡張として「AD Connectorの作成」を選択します
ディレクトリの詳細
- 組織名、Workdocなどのアクセスに利用する任意の文字列を指定します
- ディレクトリのDNS、ADサーバのドメイン名を指定します
- ディレクトリのNetBIOS名は、ADサーバのNetBIOS名を指定します
- Connectorアカウントは、事前にADサーバに追加したADユーザを指定します
- 10台以上のWorkspacesを起動する予定がある場合、Connectorアカウントに「Computer objects」「User objects」の権限を付与してご利用ください。
- AD Connector の前提条件:接続権限の委任
- DNSアドレスは、ADサーバのIPアドレスを指定します
- 今回VPCはデフォルトVPCを指定、サブネットは「a」「c」を指定しました。
ディレクトリの確認
- ADコネクタの作成が完了し、ステータスがアクティブになると、ディレクトリが利用可能となります。
一覧
詳細
Workspacesの有効化
- ディレクトリの詳細画面より、Workspacesのディレクトリ設定画面に遷移します
- Workspacesのディレクトリ設定画面で、ADコネクタのディレクトリを選択し、アクションから「登録」操作を行います
- WorkspacesにはWorkdocsのライセンスがバンドルされるので、あわせて有効化しました。
- 登録済みとなった事を確認します。
ディレクトリの利用
- Workspacesの起動時、ディレクトリとしてAD Connectorの利用が可能になります。
- ユーザの特定画面で、ADサーバのユーザが選択できる事を確認します。
- その後のWorkSpaces、WorkDocsの設定は、以下の記事を御覧ください。
まとめ
「AD Connector」を利用する事で、既存ADサーバと連携したWorkspaces環境を簡単に構築する事ができ、 2014年当時の「WorkSpaces Connect」と比較して、各段に進化していることを確認できました。
AD Connectorを設定される場合には、 事前に設置予定のVPCから、ADサーバに対して必要なポートが疎通可能な状態である事と、 ADサーバのDNSから、ldap、kerberosのSRVレコードが取得が出来る事を確認頂くことをおすすめします。